package com.ruoyi.basedata.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import lombok.*;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 当前缴费信息对象 t_user_account
 * 
 * @author gdqt
 * @date 2025-06-27
 */
@EqualsAndHashCode(callSuper = true)
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName("t_user_account")
public class UserAccount extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键 */
    @TableId(value="id", type= IdType.AUTO)
    private Long id;

    /** 用户编号 */
    @Excel(name = "用户编号")
    @TableField("user_id")
    private String userId;

    /** 月结欠费 */
    @Excel(name = "月结欠费")
    @TableField("month_arrear")
    private BigDecimal monthArrear;

    /** 违约金 */
    @Excel(name = "违约金")
    @TableField("late_fee")
    private BigDecimal lateFee;

    /** 欠费合计 */
    @Excel(name = "欠费合计")
    @TableField("total_arrear")
    private BigDecimal totalArrear;

    /** 本月费用 */
    @Excel(name = "本月费用")
    @TableField("month_cost")
    private BigDecimal monthCost;

    /** 结算余额 */
    @Excel(name = "结算余额")
    @TableField("settle_balance")
    private BigDecimal settleBalance;

    /** 可用余额 */
    @Excel(name = "可用余额")
    @TableField("available_balance")
    private BigDecimal availableBalance;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    @TableField("updated_time")
    private Date updatedTime;

    @TableField(exist = false)
    private String userName;

    @TableField(exist = false)
    private String userAddress;

    @TableField(exist = false)
    private String userCode;

    @TableField(exist = false)
    private Integer userMark;
}
